package com.ly.consumer.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 基于 Bean 方式创建 延迟交换机和队列
 * @author 23087
 */
@Slf4j
@Configuration
public class DelayExchangeConfig {

    /**
     * 创建一个 延迟交换机
     * @return
     */
    @Bean
    public DirectExchange delayExchange(){
        return ExchangeBuilder
                // 指定交换机类型和名称
                .directExchange("delay.direct")
                // 设置 delay 的属性为 true
                .delayed()
                // 持久化
                .durable(true)
                .build();
    }

    /**
     * 创建一个队列
     * @return
     */
    @Bean
    public Queue delayQueue() {
        return new Queue("delay.queue");
    }

    /**
     * 绑定 延迟交换机和消息队列
     * @return
     */
    @Bean
    public Binding delayQueueBinding() {
        return BindingBuilder.bind(delayQueue()).to(delayExchange()).with("delay");
    }

}
